linux系统下常用磁盘管理命令――dd命令的使用技巧 您所在的位置:网站首页 linux dd命令创建文件 linux系统下常用磁盘管理命令――dd命令的使用技巧

linux系统下常用磁盘管理命令――dd命令的使用技巧

#linux系统下常用磁盘管理命令――dd命令的使用技巧| 来源: 网络整理| 查看: 265

  dd命令用于复制文件并对原文件的内容进行转换和格式化处理。dd命令功能很强大的,对于一些比较底层的问题,使用dd命令往往可以得到出人意料的效果。用的比较多的还是用dd来备份裸设备。但是不推荐,如果需要备份oracle裸设备,可以使用rman备份,或使用第三方软件备份,使用dd的话,管理起来不太方便。  

 

     功能:转换和复制文件。      语法:dd[option=value]…      说明:该命令把指定的输入文件复制到指定的输出文件中,并且在复制过程中可以进行格式转换。该命令还可以指定输入块和输出块的大小。系统默认使用标准输入文件和标准输出文件。      命令行中各选项采用“选项=值”的形式。其含义如下:      if=file 输入文件名,默认值是标准输入文件。      of=file 输出文件名;默认值是标准输出文件。如果没有指定选项 conv=notrunc,则该选项会覆盖已有的文件。      ibs=n 输入块的大小为n个字节(默认值一般为1024字节)。      obs=n 输出块的大小为n个字节(默认值一般为1024字节)。      bs=n 同时设置输入块和输出块的大小,取代ibs和obs。如果没有指定进行转换,则这样进行设置是非常有效的。      cbs=n 转换时用的缓冲区大小。      skip=n 从n+1个记录开始进行复制(这些记录实际上被读过,但没有输出)。      seek=n 在进行复制之前,从输入文件的开头向后查寻n个记录。      lseek=n 与seek相同,但lseek是检查n个记录,并不读它们。      files=n 指定要连接在一起的输入文件个数(通常仅用于磁带操作)。      conv=n 只复制n个输入记录。      conv=ASCI 把EBCDIC码转换为ASCI码。      conv=ebcdic 把ASCI码转换为EBCDIC码。      conv=immap 输入必须是普通文件或者块特别服务。      conv=mmap 输入和输出都必须是普通文件或者块特别服务。      conv=ucase 把字母转换为大写。      conv=lcase 把字母转换为小写。      conv=swab 交换每对字节。      conv=noeror 出错时不停止处理。      conv=notrunc 不截短输出文件。dd保留输出文件中的原有盘块。      conv=sync 把每个输入记录的大小都调到ibs的大小。      conv=…,… 由逗号隔开的多个转换组合。      linux dd命令的应用实例      1.将本地的/dev/hdb整盘备份到/dev/hdd      #dd if=/dev/hdb of=/dev/hdd      2.将/dev/hdb全盘数据备份到指定路径的image文件      #dd if=/dev/hdb of=/root/image      3.将备份文件恢复到指定盘      #dd if=/root/image of=/dev/hdb      4.备份/dev/hdb全盘数据,并利用gzip工具进行压缩,保存到指定路径      #dd if=/dev/hdb | gzip > /root/image.gz      5.将压缩的备份文件恢复到指定盘      #gzip -dc /root/image.gz | dd of=/dev/hdb      6.备份与恢复MBR      备份磁盘开始的512个字节大小的MBR信息到指定文件:      #dd if=/dev/hda of=/root/image count=1 bs=512      count=1指仅拷贝一个块;bs=512指块大小为512个字节。      恢复:      #dd if=/root/image of=/dev/had      将备份的MBR信息写到磁盘开始部分      7.备份软盘      #dd if=/dev/fd0 of=disk.img count=1 bs=1440k (即块大小为1.44M)      8.拷贝内存内容到硬盘      #dd if=/dev/mem of=/root/mem.bin bs=1024 (指定块大小为1k)        9.拷贝光盘内容到指定文件夹,并保存为cd.iso文件      #dd if=/dev/cdrom(hdc) of=/root/cd.iso      10.增加swap分区文件大小      第一步:创建一个大小为256M的文件:      #dd if=/dev/zero of=/swapfile bs=1024 count=262144      第二步:把这个文件变成swap文件:      #mkswap /swapfile      第三步:启用这个swap文件:      #swapon /swapfile      第四步:编辑/etc/fstab文件,使在每次开机时自动加载swap文件:      /swapfile    swap    swap    default   0 0      11.销毁磁盘数据      #dd if=/dev/urandom of=/dev/hda1      注意:利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。      12.测试硬盘的读写速度      #dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file      #dd if=/root/1Gb.file bs=64k | dd of=/dev/null      通过以上两个命令输出的命令执行时间,可以计算出硬盘的读、写速度。      13.确定硬盘的最佳块大小:      #dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file      #dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file      #dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file      #dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file      通过比较以上命令输出中所显示的命令执行时间,即可确定系统最佳的块大小。      14.修复硬盘:      #dd if=/dev/sda of=/dev/sda 或dd if=/dev/hda of=/dev/hda      当硬盘较长时间(一年以上)放置不使用后,磁盘上会产生magnetic flux point,当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数 据起死回生。并且这个过程是安全、高效的。      15.利用netcat远程备份      #dd if=/dev/hda bs=16065b | netcat < targethost-IP > 1234      在源主机上执行此命令备份/dev/hda      #netcat -l -p 1234 | dd of=/dev/hdc bs=16065b      在目的主机上执行此命令来接收数据并写入/dev/hdc      #netcat -l -p 1234 | bzip2 > partition.img      #netcat -l -p 1234 | gzip > partition.img      以上两条指令是目的主机指令的变化分别采用bzip2、gzip对数据进行压缩,并将备份文件保存在当前目录。      16.将一个大视频文件的第i个字节的值改成0x41(大写字母A的ASCII值)      #echo A | dd of=bigfile seek=$i bs=1 count=1 conv=notrunc      17.建立linux虚拟盘,用文件模拟磁盘      在进行linux的实验中,如果没有多余的硬盘来做测试。则可以在linux下使用文件来模拟磁盘,以供测试目的。      其模拟过程如下所示,摘录自《Oracle数据库核心技术与实务详解-教你如何成为Oracle 10g OCP》一书。      1)以root用户创建一个ASM磁盘所在的目录。      # mkdir –p /u01/asmdisks      2)通过dd命令创建6个400M大小的文件,每个文件代表一块磁盘。      [root@book u01]# cd asmdisks      [root@book asmdisks]# dd if=/dev/zero of=asm_disk1 bs=1024k count=400      [root@book asmdisks]# dd if=/dev/zero of=asm_disk2 bs=1024k count=400      [root@book asmdisks]# dd if=/dev/zero of=asm_disk3 bs=1024k count=400      [root@book asmdisks]# dd if=/dev/zero of=asm_disk4 bs=1024k count=400      [root@book asmdisks]# dd if=/dev/zero of=asm_disk5 bs=1024k count=400      [root@book asmdisks]# dd if=/dev/zero of=asm_disk6 bs=1024k count=400      3)将这些文件与裸设备关联。      [root@book asmdisks]# chmod 777 asm_disk*      [root@book asmdisks]# losetup /dev/loop1 asm_disk1      [root@book asmdisks]# losetup /dev/loop2 asm_disk2      [root@book asmdisks]# losetup /dev/loop3 asm_disk3      [root@book asmdisks]# losetup /dev/loop4 asm_disk4      [root@book asmdisks]# losetup /dev/loop5 asm_disk5      [root@book asmdisks]# losetup /dev/loop6 asm_disk6      注意:如果要删除通过dd模拟出的虚拟磁盘文件的话,直接删除模拟出的磁盘文件(也就是asm_disk1、asm_disk2…asm_disk6)还不够,还必须执行losetup -d /dev/loopN,在这里N从1到6。否则,磁盘文件所占用的磁盘空间不能释放



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有